A Simple Method for Melodic Analysis and Classification

Sorbonne Universités / Universités Pierre et Marie Curie et Paris Sorbonne

June 10-11-12, 2015 Paris, France

Introduction : Aims and general approach

  • To « analyse » and classify a big number of melodies
  • Analysis from audio files (no symbolic data)
  • A classification based on the scale proximity
  • Toward an unsupervised approach (not a template-match approch)
  • A simple method ?
  • A Python Module : Diastema (https://github.com/AnasGhrab/diastema)
In [1]:
%matplotlib inline
from diastema import *
from IPython.display import Audio

Step 1 : Fondamental frequency (f0) detection

  • Praat
  • PitchYinFFT (Essentia)
  • PredominantMelody (Essentia)
In [2]:
path = "/Users/anas/AUDIO/quatre_chants/"
Chants = Melodies(path,transpose="No",xmin=250,xmax=500,minFrequency=0,maxFrequency=700)
Lecture et analyse de  4  fichiers (.txt) dans le dossier : /Users/anas/AUDIO/quatre_chants/
tranposing from  mode  to  300
Ghom_11.txt (not transposed)
tranposing from  mode  to  300
Guerm_16.txt (not transposed)
tranposing from  mode  to  300
TataGhom_017.txt (not transposed)
tranposing from  mode  to  300
TataGhom_018.txt (not transposed)
In [3]:
Audio(filename=path+Chants.melodies[0].file_label+".wav")
Out[3]:
In [4]:
for i in range(0,len(Chants.melodies)):
    Chants.melodies[i].plot()

Step 2 : Frequency Density Estimation

In [5]:
Chants.PdfsPlot(allplots="Yes",gpdf="No")
In [6]:
Chants = Melodies(path,transpose="No",xmin=250,xmax=500,minFrequency=0,maxFrequency=700,bw_method=0.15)
Chants.PdfsPlot(allplots="Yes",gpdf="No")
Lecture et analyse de  4  fichiers (.txt) dans le dossier : /Users/anas/AUDIO/quatre_chants/
tranposing from  mode  to  300
Ghom_11.txt (not transposed)
tranposing from  mode  to  300
Guerm_16.txt (not transposed)
tranposing from  mode  to  300
TataGhom_017.txt (not transposed)
tranposing from  mode  to  300
TataGhom_018.txt (not transposed)

Step 3 : Tonic detection

  • Extract the last frequencies (0.5%, 1%, 1.5%)
  • The tonic can be :
    • the most present frequency : mode()
    • The most probable frequency : KDE->PDF
In [7]:
Chants.AllTonics([0.5,1,1.5,2,5,15],method="pdf")
Toniques possibles de la Phrase Ghom_11  :  [349, 342, 342, 343, 366, 362]
Toniques possibles de la Phrase Guerm_16  :  [324, 324, 324, 324, 324, 326]
Toniques possibles de la Phrase TataGhom_017  :  [449, 445, 446, 447, 446, 445]
Toniques possibles de la Phrase TataGhom_018  :  [428, 428, 429, 428, 429, 428]
In [8]:
Chants.AllTonics([0.5,1,1.5,2,5,15],method="mode")
Toniques possibles de la Phrase Ghom_11  :  [349, 349, 343, 343, 367, 367]
Toniques possibles de la Phrase Guerm_16  :  [323, 323, 323, 323, 323, 323]
Toniques possibles de la Phrase TataGhom_017  :  [450, 445, 450, 447, 447, 403]
Toniques possibles de la Phrase TataGhom_018  :  [429, 429, 429, 427, 429, 429]

Step 3bis (optional) : Getting the scale based of the detected tonic

In [9]:
for i in range(0,len(Chants.melodies)):
    print Chants.melodies[i].get_intervals(percent=0.5,method="pdf",unit="savart")
[  36.407    -4.5263  -61.0778  126.3682]
[  13.6399   95.4217   49.9042  -77.4406  161.4415]
[-46.2796 -10.0242 -99.0557  43.2213]
[  0.7248  38.6828 -26.5587 -51.0639]
In [10]:
for i in range(0,len(Chants.melodies)):
    print Chants.melodies[i].get_intervals(percent=0.5,method="mode",unit="savart")
[  36.407    -4.5263  -61.0778  126.3682]
[  14.9824   96.7642   51.2467  -76.0981  162.784 ]
[ -47.2458  -10.9904 -100.0219   42.2551]
[ -0.2888  37.6693 -27.5723 -52.0774]

Step 4 : Transposition : tonic or mode ?

In [11]:
Chants = Melodies(path,transpose="Yes",freqref=300,xmin=250,xmax=420,bw_method=0.15)
Chants.PdfsPlot(allplots="Yes",gpdf="No")
Lecture et analyse de  4  fichiers (.txt) dans le dossier : /Users/anas/AUDIO/quatre_chants/
tranposing from  mode  to  300
Ghom_11.txt (transposed)
tranposing from  mode  to  300
Guerm_16.txt (transposed)
tranposing from  mode  to  300
TataGhom_017.txt (transposed)
tranposing from  mode  to  300
TataGhom_018.txt (transposed)
In [12]:
Chants = Melodies(path,transpose="Yes",transpositionref="tonic",freqref=300,xmin=250,xmax=420,bw_method=0.15)
Chants.PdfsPlot(allplots="Yes",gpdf="No")
Lecture et analyse de  4  fichiers (.txt) dans le dossier : /Users/anas/AUDIO/quatre_chants/
tranposing from  mode  to  300
Ghom_11.txt (transposed)
tranposing from  mode  to  300
Guerm_16.txt (transposed)
tranposing from  mode  to  300
TataGhom_017.txt (transposed)
tranposing from  mode  to  300
TataGhom_018.txt (transposed)

Step 4 : Correlation / Distances

In [41]:
data_dist = Chants.PdfCorr(out="pdist",metric='euclidean')
data_dist
Out[41]:
array([ 0.0758,  0.0583,  0.0824,  0.0782,  0.0823,  0.0978])
In [34]:
data_link = linkage(data_dist,method='complete') # computing the linkage
data_link
Out[34]:
array([[ 0.    ,  2.    ,  0.0583,  2.    ],
       [ 1.    ,  4.    ,  0.0782,  3.    ],
       [ 3.    ,  5.    ,  0.0978,  4.    ]])

Step 5 Hierarchical Clustering

In [35]:
dendrogram(data_link,labels=Chants.file_names)
plt.xlabel('Samples')
plt.ylabel('Distance')
plt.suptitle('Four melodies', fontweight='bold', fontsize=14);

Step 6 : Similarity matrix / Heatmap

In [36]:
# As explained here : http://nbviewer.ipython.org/github/OxanaSachenkova/hclust-python/blob/master/hclust.ipynb
# Compute and plot first dendrogram.
fig = plt.figure(figsize=(8,8))
# x ywidth height
ax1 = fig.add_axes([0.05,0.1,0.2,0.6])
Y = linkage(data_dist, method='complete')
Z1 = dendrogram(Y, orientation='right',labels=Chants.file_names) # adding/removing the axes
ax1.set_xticks([])

# Compute and plot second dendrogram.
ax2 = fig.add_axes([0.4,0.71,0.6,0.2])
Z2 = dendrogram(Y)
ax2.set_xticks([])
ax2.set_yticks([])

#Compute and plot the heatmap
axmatrix = fig.add_axes([0.4,0.1,0.6,0.6])
idx1 = Z1['leaves']
idx2 = Z2['leaves']
D = squareform(data_dist)
D = D[idx1,:]
D = D[:,idx2]
im = axmatrix.matshow(D, aspect='auto', origin='lower', cmap=plt.cm.YlGnBu)
axmatrix.set_xticks([])
axmatrix.set_yticks([])

# Plot colorbar.
axcolor = fig.add_axes([1.01,0.1,0.02,0.6])
plt.colorbar(im, cax=axcolor);

Toward a clustering of traditional woman songs in Tunisia (309 songs)

In [3]:
path = "/Users/anas/AUDIO/Chants_femmes/"
Chants = Melodies(path,transpose="Yes")
Lecture et analyse de  309  fichiers (.txt) dans le dossier : /Users/anas/AUDIO/Chants_femmes/
Bembla_01.txt (transposed)
Bembla_02.txt (transposed)
Bembla_03.txt (transposed)
Bembla_04.txt (transposed)
Bembla_05.txt (transposed)
Bembla_06.txt (transposed)
Bembla_07.txt (transposed)
Bembla_08.txt (transposed)
Bembla_09.txt (transposed)
Bembla_10.txt (transposed)
Bembla_11.txt (transposed)
Bembla_12.txt (transposed)
Bembla_13.txt (transposed)
Bembla_14.txt (transposed)
Bembla_15.txt (transposed)
Bembla_16.txt (transposed)
Bembla_17.txt (transposed)
Bembla_18.txt (transposed)
Bembla_19.txt (transposed)
Bembla_20.txt (transposed)
Bembla_21.txt (transposed)
Bembla_22.txt (transposed)
Bembla_23.txt (transposed)
Bembla_24.txt (transposed)
Bembla_25.txt (transposed)
Bembla_26.txt (transposed)
Bembla_27.txt (transposed)
Bembla_28.txt (transposed)
Bembla_29.txt (transposed)
Bembla_30.txt (transposed)
Bembla_31.txt (transposed)
Bembla_32.txt (transposed)
Bembla_33.txt (transposed)
Bembla_34.txt (transposed)
Bembla_35.txt (transposed)
Bembla_36.txt (transposed)
Bembla_37.txt (transposed)
Bembla_38.txt (transposed)
Bembla_39.txt (transposed)
Bembla_40.txt (transposed)
Bembla_41.txt (transposed)
Bembla_42.txt (transposed)
Bembla_43.txt (transposed)
Bembla_44.txt (transposed)
Bembla_45.txt (transposed)
Bembla_46.txt (transposed)
Bembla_47.txt (transposed)
Bembla_48.txt (transposed)
Bembla_49.txt (transposed)
Bembla_50.txt (transposed)
Bembla_51.txt (transposed)
Bembla_52.txt (transposed)
Bembla_53.txt (transposed)
Bembla_54.txt (transposed)
Bembla_55.txt (transposed)
Bembla_56.txt (transposed)
Bembla_57.txt (transposed)
Bembla_58.txt (transposed)
Bembla_59.txt (transposed)
BeniKhedache_01.txt (transposed)
Ghom_01.txt (transposed)
Ghom_02.txt (transposed)
Ghom_03.txt (transposed)
Ghom_04.txt (transposed)
Ghom_05.txt (transposed)
Ghom_06.txt (transposed)
Ghom_07.txt (transposed)
Ghom_08.txt (transposed)
Ghom_09.txt (transposed)
Ghom_10.txt (transposed)
Ghom_11.txt (transposed)
Ghom_12.txt (transposed)
Ghom_13.txt (transposed)
Ghom_14.txt (transposed)
Ghom_15.txt (transposed)
Ghom_16.txt (transposed)
Ghom_17.txt (transposed)
Ghom_18.txt (transposed)
Ghom_19.txt (transposed)
Ghom_20.txt (transposed)
Ghom_21.txt (transposed)
Ghom_22.txt (transposed)
Guerm_01.txt (transposed)
Guerm_02.txt (transposed)
Guerm_03.txt (transposed)
Guerm_04.txt (transposed)
Guerm_05.txt (transposed)
Guerm_06.txt (transposed)
Guerm_07.txt (transposed)
Guerm_08.txt (transposed)
Guerm_09.txt (transposed)
Guerm_10.txt (transposed)
Guerm_11.txt (transposed)
Guerm_12.txt (transposed)
Guerm_13.txt (transposed)
Guerm_14.txt (transposed)
Guerm_15.txt (transposed)
Guerm_16.txt (transposed)
Guerm_17.txt (transposed)
Guerm_18.txt (transposed)
Guerm_19.txt (transposed)
Kasserine_000.txt (transposed)
Kasserine_001.txt (transposed)
Kasserine_002.txt (transposed)
Kasserine_003.txt (transposed)
Kasserine_004.txt (transposed)
Kasserine_005.txt (transposed)
Kasserine_006.txt (transposed)
Kasserine_007.txt (transposed)
Kasserine_008.txt (transposed)
Kasserine_009.txt (transposed)
Kasserine_010.txt (transposed)
Kasserine_011.txt (transposed)
Kasserine_012.txt (transposed)
Kasserine_013.txt (transposed)
Kasserine_014.txt (transposed)
Kasserine_015.txt (transposed)
Kasserine_016.txt (transposed)
Kasserine_017.txt (transposed)
Kasserine_018.txt (transposed)
Kasserine_019.txt (transposed)
Kasserine_020.txt (transposed)
Kasserine_021.txt (transposed)
Kasserine_022.txt (transposed)
Kasserine_023.txt (transposed)
Kasserine_024.txt (transposed)
Kasserine_025.txt (transposed)
Kasserine_026.txt (transposed)
Kasserine_027.txt (transposed)
Kasserine_028.txt (transposed)
Kasserine_029.txt (transposed)
Kasserine_030.txt (transposed)
Kasserine_031.txt (transposed)
Kasserine_032.txt (transposed)
Kasserine_033.txt (transposed)
Kasserine_034.txt (transposed)
Kasserine_035.txt (transposed)
Kasserine_036.txt (transposed)
Kasserine_037.txt (transposed)
Kasserine_038.txt (transposed)
Kasserine_039.txt (transposed)
Kasserine_040.txt (transposed)
Kasserine_041.txt (transposed)
Kasserine_042.txt (transposed)
Kasserine_043.txt (transposed)
Kasserine_044.txt (transposed)
Kasserine_045.txt (transposed)
Kasserine_046.txt (transposed)
Kasserine_047.txt (transposed)
Kasserine_048.txt (transposed)
Kasserine_049.txt (transposed)
Kasserine_050.txt (transposed)
Kasserine_051.txt (transposed)
Kasserine_052.txt (transposed)
Kasserine_053.txt (transposed)
Kasserine_054.txt (transposed)
Kasserine_055.txt (transposed)
Kasserine_056.txt (transposed)
Kasserine_057.txt (transposed)
Kasserine_058.txt (transposed)
Kasserine_059.txt (transposed)
Kasserine_060.txt (transposed)
Kasserine_061.txt (transposed)
Kasserine_062.txt (transposed)
Kasserine_063.txt (transposed)
Kasserine_064.txt (transposed)
Kasserine_065.txt (transposed)
Kasserine_066.txt (transposed)
Kasserine_067.txt (transposed)
Kasserine_068.txt (transposed)
Kasserine_069.txt (transposed)
Kasserine_070.txt (transposed)
Kasserine_071.txt (transposed)
Kasserine_072.txt (transposed)
Kasserine_073.txt (transposed)
Kasserine_074.txt (transposed)
Kasserine_075.txt (transposed)
Kasserine_076.txt (transposed)
Kasserine_077.txt (transposed)
Kasserine_078.txt (transposed)
Kasserine_079.txt (transposed)
Kasserine_080.txt (transposed)
Kasserine_081.txt (transposed)
Kasserine_082.txt (transposed)
Kasserine_083.txt (transposed)
Kasserine_084.txt (transposed)
Kasserine_085.txt (transposed)
Kasserine_086.txt (transposed)
Kasserine_087.txt (transposed)
Kasserine_088.txt (transposed)
Kasserine_089.txt (transposed)
Kasserine_090.txt (transposed)
Kasserine_091.txt (transposed)
Khniss_001.txt (transposed)
Khniss_002.txt (transposed)
Khniss_003.txt (transposed)
Khniss_004.txt (transposed)
Khniss_005.txt (transposed)
Khniss_006.txt (transposed)
Khniss_007.txt (transposed)
Khniss_008.txt (transposed)
Khniss_009.txt (transposed)
Khniss_010.txt (transposed)
Khniss_011.txt (transposed)
Khniss_012.txt (transposed)
Khniss_013.txt (transposed)
Khniss_014.txt (transposed)
Khniss_015.txt (transposed)
Khniss_016.txt (transposed)
Khniss_017.txt (transposed)
Khniss_018.txt (transposed)
Khniss_019.txt (transposed)
Khniss_020.txt (transposed)
Khniss_021.txt (transposed)
Khniss_022.txt (transposed)
Khniss_023.txt (transposed)
Khniss_024.txt (transposed)
Khniss_025.txt (transposed)
Khniss_026.txt (transposed)
Khniss_027.txt (transposed)
Khniss_028.txt (transposed)
Khniss_029.txt (transposed)
Khniss_030.txt (transposed)
Khniss_031.txt (transposed)
Khniss_032.txt (transposed)
Khniss_033.txt (transposed)
Khniss_034.txt (transposed)
Medenine_000.txt (transposed)
Medenine_001.txt (transposed)
Medenine_002.txt (transposed)
Medenine_003.txt (transposed)
Medenine_004.txt (transposed)
Medenine_005.txt (transposed)
Medenine_006.txt (transposed)
Medenine_007.txt (transposed)
Medenine_008.txt (transposed)
Medenine_009.txt (transposed)
Medenine_010.txt (transposed)
Medenine_011.txt (transposed)
Medenine_012.txt (transposed)
Medenine_013.txt (transposed)
Medenine_014.txt (transposed)
Medenine_015.txt (transposed)
Medenine_016.txt (transposed)
Medenine_017.txt (transposed)
Medenine_018.txt (transposed)
Medenine_019.txt (transposed)
Medenine_020.txt (transposed)
Medenine_021.txt (transposed)
Medenine_022.txt (transposed)
Medenine_023.txt (transposed)
Medenine_024.txt (transposed)
Medenine_025.txt (transposed)
Medenine_026.txt (transposed)
Medenine_027.txt (transposed)
Medenine_028.txt (transposed)
Medenine_029.txt (transposed)
Medenine_030.txt (transposed)
Medenine_031.txt (transposed)
Medenine_032.txt (transposed)
Medenine_033.txt (transposed)
Medenine_034.txt (transposed)
Medenine_035.txt (transposed)
Medenine_036.txt (transposed)
Medenine_037.txt (transposed)
Medenine_038.txt (transposed)
Medenine_039.txt (transposed)
Medenine_040.txt (transposed)
Medenine_041.txt (transposed)
Medenine_042.txt (transposed)
Medenine_043.txt (transposed)
Medenine_044.txt (transposed)
Medenine_045.txt (transposed)
Medenine_046.txt (transposed)
Medenine_047.txt (transposed)
Medenine_048.txt (transposed)
Medenine_049.txt (transposed)
Medenine_050.txt (transposed)
Medenine_051.txt (transposed)
Medenine_052.txt (transposed)
Medenine_053.txt (transposed)
Medenine_054.txt (transposed)
Medenine_055.txt (transposed)
Medenine_056.txt (transposed)
Medenine_057.txt (transposed)
Siliana_01.txt (transposed)
Siliana_02.txt (transposed)
Siliana_03.txt (transposed)
Siliana_04.txt (transposed)
Siliana_05.txt (transposed)
Siliana_06.txt (transposed)
TataGhom_001.txt (transposed)
TataGhom_002.txt (transposed)
TataGhom_007.txt (transposed)
TataGhom_008.txt (transposed)
TataGhom_009.txt (transposed)
TataGhom_010.txt (transposed)
TataGhom_011.txt (transposed)
TataGhom_012.txt (transposed)
TataGhom_013.txt (transposed)
TataGhom_015.txt (transposed)
TataGhom_016.txt (transposed)
TataGhom_017.txt (transposed)
TataGhom_018.txt (transposed)
TataGhom_019.txt (transposed)
TataGhom_020.txt (transposed)
TataGhom_021.txt (transposed)
TataGhom_022.txt (transposed)
TataGhom_023.txt (transposed)
In [11]:
# As explained here : http://nbviewer.ipython.org/github/OxanaSachenkova/hclust-python/blob/master/hclust.ipynb
# Compute and plot first dendrogram.
fig = plt.figure(figsize=(6,100))
# x ywidth height
#ax1 = fig.add_axes([1,1,3,3])
Y = linkage(Chants.PdfCorr(),method='complete')
Z1 = dendrogram(Y, orientation='right',labels=Chants.file_names) # adding/removing the axes
ax1.set_xticks([]);
In [16]:
for i in range(0,len(Chants.melodies)):
    print i, Chants.melodies[i].file_label
0 Bembla_01
1 Bembla_02
2 Bembla_03
3 Bembla_04
4 Bembla_05
5 Bembla_06
6 Bembla_07
7 Bembla_08
8 Bembla_09
9 Bembla_10
10 Bembla_11
11 Bembla_12
12 Bembla_13
13 Bembla_14
14 Bembla_15
15 Bembla_16
16 Bembla_17
17 Bembla_18
18 Bembla_19
19 Bembla_20
20 Bembla_21
21 Bembla_22
22 Bembla_23
23 Bembla_24
24 Bembla_25
25 Bembla_26
26 Bembla_27
27 Bembla_28
28 Bembla_29
29 Bembla_30
30 Bembla_31
31 Bembla_32
32 Bembla_33
33 Bembla_34
34 Bembla_35
35 Bembla_36
36 Bembla_37
37 Bembla_38
38 Bembla_39
39 Bembla_40
40 Bembla_41
41 Bembla_42
42 Bembla_43
43 Bembla_44
44 Bembla_45
45 Bembla_46
46 Bembla_47
47 Bembla_48
48 Bembla_49
49 Bembla_50
50 Bembla_51
51 Bembla_52
52 Bembla_53
53 Bembla_54
54 Bembla_55
55 Bembla_56
56 Bembla_57
57 Bembla_58
58 Bembla_59
59 BeniKhedache_01
60 Ghom_01
61 Ghom_02
62 Ghom_03
63 Ghom_04
64 Ghom_05
65 Ghom_06
66 Ghom_07
67 Ghom_08
68 Ghom_09
69 Ghom_10
70 Ghom_11
71 Ghom_12
72 Ghom_13
73 Ghom_14
74 Ghom_15
75 Ghom_16
76 Ghom_17
77 Ghom_18
78 Ghom_19
79 Ghom_20
80 Ghom_21
81 Ghom_22
82 Guerm_01
83 Guerm_02
84 Guerm_03
85 Guerm_04
86 Guerm_05
87 Guerm_06
88 Guerm_07
89 Guerm_08
90 Guerm_09
91 Guerm_10
92 Guerm_11
93 Guerm_12
94 Guerm_13
95 Guerm_14
96 Guerm_15
97 Guerm_16
98 Guerm_17
99 Guerm_18
100 Guerm_19
101 Kasserine_000
102 Kasserine_001
103 Kasserine_002
104 Kasserine_003
105 Kasserine_004
106 Kasserine_005
107 Kasserine_006
108 Kasserine_007
109 Kasserine_008
110 Kasserine_009
111 Kasserine_010
112 Kasserine_011
113 Kasserine_012
114 Kasserine_013
115 Kasserine_014
116 Kasserine_015
117 Kasserine_016
118 Kasserine_017
119 Kasserine_018
120 Kasserine_019
121 Kasserine_020
122 Kasserine_021
123 Kasserine_022
124 Kasserine_023
125 Kasserine_024
126 Kasserine_025
127 Kasserine_026
128 Kasserine_027
129 Kasserine_028
130 Kasserine_029
131 Kasserine_030
132 Kasserine_031
133 Kasserine_032
134 Kasserine_033
135 Kasserine_034
136 Kasserine_035
137 Kasserine_036
138 Kasserine_037
139 Kasserine_038
140 Kasserine_039
141 Kasserine_040
142 Kasserine_041
143 Kasserine_042
144 Kasserine_043
145 Kasserine_044
146 Kasserine_045
147 Kasserine_046
148 Kasserine_047
149 Kasserine_048
150 Kasserine_049
151 Kasserine_050
152 Kasserine_051
153 Kasserine_052
154 Kasserine_053
155 Kasserine_054
156 Kasserine_055
157 Kasserine_056
158 Kasserine_057
159 Kasserine_058
160 Kasserine_059
161 Kasserine_060
162 Kasserine_061
163 Kasserine_062
164 Kasserine_063
165 Kasserine_064
166 Kasserine_065
167 Kasserine_066
168 Kasserine_067
169 Kasserine_068
170 Kasserine_069
171 Kasserine_070
172 Kasserine_071
173 Kasserine_072
174 Kasserine_073
175 Kasserine_074
176 Kasserine_075
177 Kasserine_076
178 Kasserine_077
179 Kasserine_078
180 Kasserine_079
181 Kasserine_080
182 Kasserine_081
183 Kasserine_082
184 Kasserine_083
185 Kasserine_084
186 Kasserine_085
187 Kasserine_086
188 Kasserine_087
189 Kasserine_088
190 Kasserine_089
191 Kasserine_090
192 Kasserine_091
193 Khniss_001
194 Khniss_002
195 Khniss_003
196 Khniss_004
197 Khniss_005
198 Khniss_006
199 Khniss_007
200 Khniss_008
201 Khniss_009
202 Khniss_010
203 Khniss_011
204 Khniss_012
205 Khniss_013
206 Khniss_014
207 Khniss_015
208 Khniss_016
209 Khniss_017
210 Khniss_018
211 Khniss_019
212 Khniss_020
213 Khniss_021
214 Khniss_022
215 Khniss_023
216 Khniss_024
217 Khniss_025
218 Khniss_026
219 Khniss_027
220 Khniss_028
221 Khniss_029
222 Khniss_030
223 Khniss_031
224 Khniss_032
225 Khniss_033
226 Khniss_034
227 Medenine_000
228 Medenine_001
229 Medenine_002
230 Medenine_003
231 Medenine_004
232 Medenine_005
233 Medenine_006
234 Medenine_007
235 Medenine_008
236 Medenine_009
237 Medenine_010
238 Medenine_011
239 Medenine_012
240 Medenine_013
241 Medenine_014
242 Medenine_015
243 Medenine_016
244 Medenine_017
245 Medenine_018
246 Medenine_019
247 Medenine_020
248 Medenine_021
249 Medenine_022
250 Medenine_023
251 Medenine_024
252 Medenine_025
253 Medenine_026
254 Medenine_027
255 Medenine_028
256 Medenine_029
257 Medenine_030
258 Medenine_031
259 Medenine_032
260 Medenine_033
261 Medenine_034
262 Medenine_035
263 Medenine_036
264 Medenine_037
265 Medenine_038
266 Medenine_039
267 Medenine_040
268 Medenine_041
269 Medenine_042
270 Medenine_043
271 Medenine_044
272 Medenine_045
273 Medenine_046
274 Medenine_047
275 Medenine_048
276 Medenine_049
277 Medenine_050
278 Medenine_051
279 Medenine_052
280 Medenine_053
281 Medenine_054
282 Medenine_055
283 Medenine_056
284 Medenine_057
285 Siliana_01
286 Siliana_02
287 Siliana_03
288 Siliana_04
289 Siliana_05
290 Siliana_06
291 TataGhom_001
292 TataGhom_002
293 TataGhom_007
294 TataGhom_008
295 TataGhom_009
296 TataGhom_010
297 TataGhom_011
298 TataGhom_012
299 TataGhom_013
300 TataGhom_015
301 TataGhom_016
302 TataGhom_017
303 TataGhom_018
304 TataGhom_019
305 TataGhom_020
306 TataGhom_021
307 TataGhom_022
308 TataGhom_023
In [25]:
plt.figure(figsize=(16,9))
Chants.melodies[74].pdf_show() # Ghom_15
Chants.melodies[70].pdf_show() # Ghom_11
Chants.melodies[71].pdf_show() # Ghom_12

Links

In [ ]: